// $ANTLR 3.4 C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g 2012-10-18 20:23:48
package PL.practica5;

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class AnalizadorFlexParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ABRIRCORCHETE", "ABRIRLLAVE", "ABRIRPARENTESIS", "ABRIRVARIABLES", "AND", "ASTERISCO", "BLANCO", "CADENA", "CERRARCORCHETE", "CERRARLLAVE", "CERRARPARENTESIS", "CERRARVARIABLES", "COMA", "COMENTARIO", "CORCHETES", "DECREMENTO", "DIGITO", "IDENT", "IGUAL", "INCREMENTO", "LETRA", "NUEVA_LINEA", "NUMERO", "OPERADORLOGICOS", "OPERADORUNITARIOS", "OR", "PRINTF", "RANGO", "RESTA", "RETORNAR", "SEPARADOR", "SEPARADORBLOQUE", "SUMA", "TIPO", "VARIABLEFLEX", "VOID"
    };

    public static final int EOF=-1;
    public static final int ABRIRCORCHETE=4;
    public static final int ABRIRLLAVE=5;
    public static final int ABRIRPARENTESIS=6;
    public static final int ABRIRVARIABLES=7;
    public static final int AND=8;
    public static final int ASTERISCO=9;
    public static final int BLANCO=10;
    public static final int CADENA=11;
    public static final int CERRARCORCHETE=12;
    public static final int CERRARLLAVE=13;
    public static final int CERRARPARENTESIS=14;
    public static final int CERRARVARIABLES=15;
    public static final int COMA=16;
    public static final int COMENTARIO=17;
    public static final int CORCHETES=18;
    public static final int DECREMENTO=19;
    public static final int DIGITO=20;
    public static final int IDENT=21;
    public static final int IGUAL=22;
    public static final int INCREMENTO=23;
    public static final int LETRA=24;
    public static final int NUEVA_LINEA=25;
    public static final int NUMERO=26;
    public static final int OPERADORLOGICOS=27;
    public static final int OPERADORUNITARIOS=28;
    public static final int OR=29;
    public static final int PRINTF=30;
    public static final int RANGO=31;
    public static final int RESTA=32;
    public static final int RETORNAR=33;
    public static final int SEPARADOR=34;
    public static final int SEPARADORBLOQUE=35;
    public static final int SUMA=36;
    public static final int TIPO=37;
    public static final int VARIABLEFLEX=38;
    public static final int VOID=39;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public AnalizadorFlexParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public AnalizadorFlexParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return AnalizadorFlexParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g"; }



    ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

    public boolean listaVacia (){
        if (errores.isEmpty()){
          return true;
        }else
          return false;
    }


    public ArrayList getListaErrores(){return errores;}


    @Override
    public void reportError (RecognitionException e){
      System.err.println (getErrorMessage(e, getTokenNames()));
      errores.add(e);
    }





    // $ANTLR start "flex"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:35:1: flex : bloque1 bloque2 bloque3 ;
    public final void flex() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:35:6: ( bloque1 bloque2 bloque3 )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:35:8: bloque1 bloque2 bloque3
            {
            pushFollow(FOLLOW_bloque1_in_flex46);
            bloque1();

            state._fsp--;


            pushFollow(FOLLOW_bloque2_in_flex48);
            bloque2();

            state._fsp--;


            pushFollow(FOLLOW_bloque3_in_flex50);
            bloque3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "flex"



    // $ANTLR start "bloque1"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:37:1: bloque1 : macro macro bloqueDeclaracion ;
    public final void bloque1() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:37:9: ( macro macro bloqueDeclaracion )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:37:11: macro macro bloqueDeclaracion
            {
            pushFollow(FOLLOW_macro_in_bloque158);
            macro();

            state._fsp--;


            pushFollow(FOLLOW_macro_in_bloque160);
            macro();

            state._fsp--;


            pushFollow(FOLLOW_bloqueDeclaracion_in_bloque162);
            bloqueDeclaracion();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bloque1"



    // $ANTLR start "macro"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:39:3: macro : IDENT CORCHETES ;
    public final void macro() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:39:9: ( IDENT CORCHETES )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:39:11: IDENT CORCHETES
            {
            match(input,IDENT,FOLLOW_IDENT_in_macro74); 

            match(input,CORCHETES,FOLLOW_CORCHETES_in_macro76); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "macro"



    // $ANTLR start "bloqueDeclaracion"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:40:3: bloqueDeclaracion : ABRIRVARIABLES declaracion declaracion CERRARVARIABLES ;
    public final void bloqueDeclaracion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:40:20: ( ABRIRVARIABLES declaracion declaracion CERRARVARIABLES )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:40:22: ABRIRVARIABLES declaracion declaracion CERRARVARIABLES
            {
            match(input,ABRIRVARIABLES,FOLLOW_ABRIRVARIABLES_in_bloqueDeclaracion84); 

            pushFollow(FOLLOW_declaracion_in_bloqueDeclaracion86);
            declaracion();

            state._fsp--;


            pushFollow(FOLLOW_declaracion_in_bloqueDeclaracion88);
            declaracion();

            state._fsp--;


            match(input,CERRARVARIABLES,FOLLOW_CERRARVARIABLES_in_bloqueDeclaracion90); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bloqueDeclaracion"



    // $ANTLR start "declaracion"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:42:3: declaracion : TIPO ( ASTERISCO )? IDENT SEPARADOR ;
    public final void declaracion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:42:15: ( TIPO ( ASTERISCO )? IDENT SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:42:17: TIPO ( ASTERISCO )? IDENT SEPARADOR
            {
            match(input,TIPO,FOLLOW_TIPO_in_declaracion100); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:42:22: ( ASTERISCO )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==ASTERISCO) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:42:22: ASTERISCO
                    {
                    match(input,ASTERISCO,FOLLOW_ASTERISCO_in_declaracion102); 

                    }
                    break;

            }


            match(input,IDENT,FOLLOW_IDENT_in_declaracion105); 

            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_declaracion107); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "declaracion"



    // $ANTLR start "bloque2"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:48:1: bloque2 : SEPARADORBLOQUE reglaflex1 reglaflex2 SEPARADORBLOQUE ;
    public final void bloque2() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:48:9: ( SEPARADORBLOQUE reglaflex1 reglaflex2 SEPARADORBLOQUE )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:48:11: SEPARADORBLOQUE reglaflex1 reglaflex2 SEPARADORBLOQUE
            {
            match(input,SEPARADORBLOQUE,FOLLOW_SEPARADORBLOQUE_in_bloque2139); 

            pushFollow(FOLLOW_reglaflex1_in_bloque2141);
            reglaflex1();

            state._fsp--;


            pushFollow(FOLLOW_reglaflex2_in_bloque2143);
            reglaflex2();

            state._fsp--;


            match(input,SEPARADORBLOQUE,FOLLOW_SEPARADORBLOQUE_in_bloque2145); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bloque2"



    // $ANTLR start "reglaflex1"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:2: reglaflex1 : ( ( VARIABLEFLEX )* ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR ) ;
    public final void reglaflex1() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:13: ( ( ( VARIABLEFLEX )* ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR ) )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:15: ( ( VARIABLEFLEX )* ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR )
            {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:15: ( ( VARIABLEFLEX )* ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:16: ( VARIABLEFLEX )* ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR
            {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:16: ( VARIABLEFLEX )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==VARIABLEFLEX) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:49:16: VARIABLEFLEX
            	    {
            	    match(input,VARIABLEFLEX,FOLLOW_VARIABLEFLEX_in_reglaflex1154); 

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:50:2: ( ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )? )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==ABRIRPARENTESIS) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:50:3: ABRIRPARENTESIS VARIABLEFLEX ( OPERADORLOGICOS VARIABLEFLEX )* CERRARPARENTESIS ( ASTERISCO | SUMA )?
            	    {
            	    match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_reglaflex1159); 

            	    match(input,VARIABLEFLEX,FOLLOW_VARIABLEFLEX_in_reglaflex1161); 

            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:50:32: ( OPERADORLOGICOS VARIABLEFLEX )*
            	    loop3:
            	    do {
            	        int alt3=2;
            	        int LA3_0 = input.LA(1);

            	        if ( (LA3_0==OPERADORLOGICOS) ) {
            	            alt3=1;
            	        }


            	        switch (alt3) {
            	    	case 1 :
            	    	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:50:33: OPERADORLOGICOS VARIABLEFLEX
            	    	    {
            	    	    match(input,OPERADORLOGICOS,FOLLOW_OPERADORLOGICOS_in_reglaflex1164); 

            	    	    match(input,VARIABLEFLEX,FOLLOW_VARIABLEFLEX_in_reglaflex1166); 

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop3;
            	        }
            	    } while (true);


            	    match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_reglaflex1170); 

            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:50:81: ( ASTERISCO | SUMA )?
            	    int alt4=2;
            	    int LA4_0 = input.LA(1);

            	    if ( (LA4_0==ASTERISCO||LA4_0==SUMA) ) {
            	        alt4=1;
            	    }
            	    switch (alt4) {
            	        case 1 :
            	            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:
            	            {
            	            if ( input.LA(1)==ASTERISCO||input.LA(1)==SUMA ) {
            	                input.consume();
            	                state.errorRecovery=false;
            	            }
            	            else {
            	                MismatchedSetException mse = new MismatchedSetException(null,input);
            	                throw mse;
            	            }


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:51:2: ( IDENT INCREMENTO | DECREMENTO )
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==IDENT) ) {
                alt6=1;
            }
            else if ( (LA6_0==DECREMENTO) ) {
                alt6=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;

            }
            switch (alt6) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:51:3: IDENT INCREMENTO
                    {
                    match(input,IDENT,FOLLOW_IDENT_in_reglaflex1183); 

                    match(input,INCREMENTO,FOLLOW_INCREMENTO_in_reglaflex1185); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:51:20: DECREMENTO
                    {
                    match(input,DECREMENTO,FOLLOW_DECREMENTO_in_reglaflex1187); 

                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_reglaflex1190); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "reglaflex1"



    // $ANTLR start "reglaflex2"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:2: reglaflex2 : ( VARIABLEFLEX )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR ;
    public final void reglaflex2() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:13: ( ( VARIABLEFLEX )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:15: ( VARIABLEFLEX )* ( IDENT INCREMENTO | DECREMENTO ) SEPARADOR
            {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:15: ( VARIABLEFLEX )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==VARIABLEFLEX) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:15: VARIABLEFLEX
            	    {
            	    match(input,VARIABLEFLEX,FOLLOW_VARIABLEFLEX_in_reglaflex2199); 

            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:29: ( IDENT INCREMENTO | DECREMENTO )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==IDENT) ) {
                alt8=1;
            }
            else if ( (LA8_0==DECREMENTO) ) {
                alt8=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;

            }
            switch (alt8) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:30: IDENT INCREMENTO
                    {
                    match(input,IDENT,FOLLOW_IDENT_in_reglaflex2203); 

                    match(input,INCREMENTO,FOLLOW_INCREMENTO_in_reglaflex2205); 

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:52:47: DECREMENTO
                    {
                    match(input,DECREMENTO,FOLLOW_DECREMENTO_in_reglaflex2207); 

                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_reglaflex2210); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "reglaflex2"



    // $ANTLR start "bloque3"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:55:1: bloque3 : metodo1 metodo2 ;
    public final void bloque3() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:55:9: ( metodo1 metodo2 )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:55:11: metodo1 metodo2
            {
            pushFollow(FOLLOW_metodo1_in_bloque3219);
            metodo1();

            state._fsp--;


            pushFollow(FOLLOW_metodo2_in_bloque3221);
            metodo2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "bloque3"



    // $ANTLR start "metodo1"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:56:2: metodo1 : cabecerafuncion ABRIRLLAVE ret CERRARLLAVE ;
    public final void metodo1() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:56:9: ( cabecerafuncion ABRIRLLAVE ret CERRARLLAVE )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:56:11: cabecerafuncion ABRIRLLAVE ret CERRARLLAVE
            {
            pushFollow(FOLLOW_cabecerafuncion_in_metodo1228);
            cabecerafuncion();

            state._fsp--;


            match(input,ABRIRLLAVE,FOLLOW_ABRIRLLAVE_in_metodo1230); 

            pushFollow(FOLLOW_ret_in_metodo1232);
            ret();

            state._fsp--;


            match(input,CERRARLLAVE,FOLLOW_CERRARLLAVE_in_metodo1234); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "metodo1"



    // $ANTLR start "metodo2"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:57:2: metodo2 : cabecerafuncion ABRIRLLAVE asignacion asignacion asignacion decrementar llamadafuncion SEPARADOR llamadafuncion SEPARADOR printf printf ret CERRARLLAVE ;
    public final void metodo2() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:57:9: ( cabecerafuncion ABRIRLLAVE asignacion asignacion asignacion decrementar llamadafuncion SEPARADOR llamadafuncion SEPARADOR printf printf ret CERRARLLAVE )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:57:11: cabecerafuncion ABRIRLLAVE asignacion asignacion asignacion decrementar llamadafuncion SEPARADOR llamadafuncion SEPARADOR printf printf ret CERRARLLAVE
            {
            pushFollow(FOLLOW_cabecerafuncion_in_metodo2241);
            cabecerafuncion();

            state._fsp--;


            match(input,ABRIRLLAVE,FOLLOW_ABRIRLLAVE_in_metodo2243); 

            pushFollow(FOLLOW_asignacion_in_metodo2245);
            asignacion();

            state._fsp--;


            pushFollow(FOLLOW_asignacion_in_metodo2247);
            asignacion();

            state._fsp--;


            pushFollow(FOLLOW_asignacion_in_metodo2249);
            asignacion();

            state._fsp--;


            pushFollow(FOLLOW_decrementar_in_metodo2251);
            decrementar();

            state._fsp--;


            pushFollow(FOLLOW_llamadafuncion_in_metodo2255);
            llamadafuncion();

            state._fsp--;


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_metodo2257); 

            pushFollow(FOLLOW_llamadafuncion_in_metodo2259);
            llamadafuncion();

            state._fsp--;


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_metodo2261); 

            pushFollow(FOLLOW_printf_in_metodo2263);
            printf();

            state._fsp--;


            pushFollow(FOLLOW_printf_in_metodo2265);
            printf();

            state._fsp--;


            pushFollow(FOLLOW_ret_in_metodo2268);
            ret();

            state._fsp--;


            match(input,CERRARLLAVE,FOLLOW_CERRARLLAVE_in_metodo2270); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "metodo2"



    // $ANTLR start "decrementar"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:59:3: decrementar : DECREMENTO IDENT SEPARADOR ;
    public final void decrementar() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:59:15: ( DECREMENTO IDENT SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:59:17: DECREMENTO IDENT SEPARADOR
            {
            match(input,DECREMENTO,FOLLOW_DECREMENTO_in_decrementar279); 

            match(input,IDENT,FOLLOW_IDENT_in_decrementar281); 

            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_decrementar283); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "decrementar"



    // $ANTLR start "parametros"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:3: parametros : ( ( ( ASTERISCO )? IDENT ( CORCHETES )* ) | CADENA | NUMERO );
    public final void parametros() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:14: ( ( ( ASTERISCO )? IDENT ( CORCHETES )* ) | CADENA | NUMERO )
            int alt11=3;
            switch ( input.LA(1) ) {
            case ASTERISCO:
            case IDENT:
                {
                alt11=1;
                }
                break;
            case CADENA:
                {
                alt11=2;
                }
                break;
            case NUMERO:
                {
                alt11=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;

            }

            switch (alt11) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:16: ( ( ASTERISCO )? IDENT ( CORCHETES )* )
                    {
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:16: ( ( ASTERISCO )? IDENT ( CORCHETES )* )
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:17: ( ASTERISCO )? IDENT ( CORCHETES )*
                    {
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:17: ( ASTERISCO )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==ASTERISCO) ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:17: ASTERISCO
                            {
                            match(input,ASTERISCO,FOLLOW_ASTERISCO_in_parametros299); 

                            }
                            break;

                    }


                    match(input,IDENT,FOLLOW_IDENT_in_parametros302); 

                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:34: ( CORCHETES )*
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( (LA10_0==CORCHETES) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:34: CORCHETES
                    	    {
                    	    match(input,CORCHETES,FOLLOW_CORCHETES_in_parametros304); 

                    	    }
                    	    break;

                    	default :
                    	    break loop10;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:48: CADENA
                    {
                    match(input,CADENA,FOLLOW_CADENA_in_parametros310); 

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:62:56: NUMERO
                    {
                    match(input,NUMERO,FOLLOW_NUMERO_in_parametros313); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "parametros"



    // $ANTLR start "cabecerafuncion"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:3: cabecerafuncion : ( TIPO | VOID ) IDENT ABRIRPARENTESIS ( ( VOID | TIPO IDENT ) ( COMA TIPO parametros )* )? CERRARPARENTESIS ;
    public final void cabecerafuncion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:19: ( ( TIPO | VOID ) IDENT ABRIRPARENTESIS ( ( VOID | TIPO IDENT ) ( COMA TIPO parametros )* )? CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:21: ( TIPO | VOID ) IDENT ABRIRPARENTESIS ( ( VOID | TIPO IDENT ) ( COMA TIPO parametros )* )? CERRARPARENTESIS
            {
            if ( input.LA(1)==TIPO||input.LA(1)==VOID ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            match(input,IDENT,FOLLOW_IDENT_in_cabecerafuncion331); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion333); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:57: ( ( VOID | TIPO IDENT ) ( COMA TIPO parametros )* )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==TIPO||LA14_0==VOID) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:58: ( VOID | TIPO IDENT ) ( COMA TIPO parametros )*
                    {
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:58: ( VOID | TIPO IDENT )
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0==VOID) ) {
                        alt12=1;
                    }
                    else if ( (LA12_0==TIPO) ) {
                        alt12=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 12, 0, input);

                        throw nvae;

                    }
                    switch (alt12) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:59: VOID
                            {
                            match(input,VOID,FOLLOW_VOID_in_cabecerafuncion337); 

                            }
                            break;
                        case 2 :
                            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:65: TIPO IDENT
                            {
                            match(input,TIPO,FOLLOW_TIPO_in_cabecerafuncion340); 

                            match(input,IDENT,FOLLOW_IDENT_in_cabecerafuncion342); 

                            }
                            break;

                    }


                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:77: ( COMA TIPO parametros )*
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==COMA) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:63:78: COMA TIPO parametros
                    	    {
                    	    match(input,COMA,FOLLOW_COMA_in_cabecerafuncion346); 

                    	    match(input,TIPO,FOLLOW_TIPO_in_cabecerafuncion348); 

                    	    pushFollow(FOLLOW_parametros_in_cabecerafuncion350);
                    	    parametros();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop13;
                        }
                    } while (true);


                    }
                    break;

            }


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_cabecerafuncion356); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cabecerafuncion"



    // $ANTLR start "llamadafuncion"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:3: llamadafuncion : IDENT ABRIRPARENTESIS ( parametros ( COMA parametros )* )? CERRARPARENTESIS ;
    public final void llamadafuncion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:18: ( IDENT ABRIRPARENTESIS ( parametros ( COMA parametros )* )? CERRARPARENTESIS )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:20: IDENT ABRIRPARENTESIS ( parametros ( COMA parametros )* )? CERRARPARENTESIS
            {
            match(input,IDENT,FOLLOW_IDENT_in_llamadafuncion365); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_llamadafuncion367); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:42: ( parametros ( COMA parametros )* )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==ASTERISCO||LA16_0==CADENA||LA16_0==IDENT||LA16_0==NUMERO) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:44: parametros ( COMA parametros )*
                    {
                    pushFollow(FOLLOW_parametros_in_llamadafuncion371);
                    parametros();

                    state._fsp--;


                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:55: ( COMA parametros )*
                    loop15:
                    do {
                        int alt15=2;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==COMA) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:64:56: COMA parametros
                    	    {
                    	    match(input,COMA,FOLLOW_COMA_in_llamadafuncion374); 

                    	    pushFollow(FOLLOW_parametros_in_llamadafuncion376);
                    	    parametros();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop15;
                        }
                    } while (true);


                    }
                    break;

            }


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_llamadafuncion382); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "llamadafuncion"



    // $ANTLR start "printf"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:66:3: printf : PRINTF ABRIRPARENTESIS CADENA ( COMA IDENT )* CERRARPARENTESIS SEPARADOR ;
    public final void printf() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:66:10: ( PRINTF ABRIRPARENTESIS CADENA ( COMA IDENT )* CERRARPARENTESIS SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:66:13: PRINTF ABRIRPARENTESIS CADENA ( COMA IDENT )* CERRARPARENTESIS SEPARADOR
            {
            match(input,PRINTF,FOLLOW_PRINTF_in_printf395); 

            match(input,ABRIRPARENTESIS,FOLLOW_ABRIRPARENTESIS_in_printf397); 

            match(input,CADENA,FOLLOW_CADENA_in_printf399); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:66:43: ( COMA IDENT )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==COMA) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:66:44: COMA IDENT
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_printf402); 

            	    match(input,IDENT,FOLLOW_IDENT_in_printf404); 

            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            match(input,CERRARPARENTESIS,FOLLOW_CERRARPARENTESIS_in_printf408); 

            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_printf410); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "printf"



    // $ANTLR start "asignacion"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:2: asignacion : IDENT IGUAL ( parametros | llamadafuncion ) SEPARADOR ;
    public final void asignacion() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:13: ( IDENT IGUAL ( parametros | llamadafuncion ) SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:15: IDENT IGUAL ( parametros | llamadafuncion ) SEPARADOR
            {
            match(input,IDENT,FOLLOW_IDENT_in_asignacion421); 

            match(input,IGUAL,FOLLOW_IGUAL_in_asignacion423); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:27: ( parametros | llamadafuncion )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==ASTERISCO||LA18_0==CADENA||LA18_0==NUMERO) ) {
                alt18=1;
            }
            else if ( (LA18_0==IDENT) ) {
                int LA18_2 = input.LA(2);

                if ( (LA18_2==ABRIRPARENTESIS) ) {
                    alt18=2;
                }
                else if ( (LA18_2==CORCHETES||LA18_2==SEPARADOR) ) {
                    alt18=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 18, 2, input);

                    throw nvae;

                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;

            }
            switch (alt18) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:28: parametros
                    {
                    pushFollow(FOLLOW_parametros_in_asignacion426);
                    parametros();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:68:41: llamadafuncion
                    {
                    pushFollow(FOLLOW_llamadafuncion_in_asignacion430);
                    llamadafuncion();

                    state._fsp--;


                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_asignacion433); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "asignacion"



    // $ANTLR start "ret"
    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:69:3: ret : RETORNAR ( NUMERO | IDENT | CADENA )? SEPARADOR ;
    public final void ret() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:69:7: ( RETORNAR ( NUMERO | IDENT | CADENA )? SEPARADOR )
            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:69:9: RETORNAR ( NUMERO | IDENT | CADENA )? SEPARADOR
            {
            match(input,RETORNAR,FOLLOW_RETORNAR_in_ret442); 

            // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:69:18: ( NUMERO | IDENT | CADENA )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==CADENA||LA19_0==IDENT||LA19_0==NUMERO) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\practica5\\src\\main\\java\\PL\\practica5\\AnalizadorFlexParser.g:
                    {
                    if ( input.LA(1)==CADENA||input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                        input.consume();
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_ret453); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "ret"

    // Delegated rules


 

    public static final BitSet FOLLOW_bloque1_in_flex46 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_bloque2_in_flex48 = new BitSet(new long[]{0x000000A000000000L});
    public static final BitSet FOLLOW_bloque3_in_flex50 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_macro_in_bloque158 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_macro_in_bloque160 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_bloqueDeclaracion_in_bloque162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_macro74 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_CORCHETES_in_macro76 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABRIRVARIABLES_in_bloqueDeclaracion84 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_declaracion_in_bloqueDeclaracion86 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_declaracion_in_bloqueDeclaracion88 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CERRARVARIABLES_in_bloqueDeclaracion90 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_declaracion100 = new BitSet(new long[]{0x0000000000200200L});
    public static final BitSet FOLLOW_ASTERISCO_in_declaracion102 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_declaracion105 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_declaracion107 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEPARADORBLOQUE_in_bloque2139 = new BitSet(new long[]{0x0000004000280040L});
    public static final BitSet FOLLOW_reglaflex1_in_bloque2141 = new BitSet(new long[]{0x0000004000280000L});
    public static final BitSet FOLLOW_reglaflex2_in_bloque2143 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_SEPARADORBLOQUE_in_bloque2145 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VARIABLEFLEX_in_reglaflex1154 = new BitSet(new long[]{0x0000004000280040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_reglaflex1159 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_VARIABLEFLEX_in_reglaflex1161 = new BitSet(new long[]{0x0000000008004000L});
    public static final BitSet FOLLOW_OPERADORLOGICOS_in_reglaflex1164 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_VARIABLEFLEX_in_reglaflex1166 = new BitSet(new long[]{0x0000000008004000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_reglaflex1170 = new BitSet(new long[]{0x0000001000280240L});
    public static final BitSet FOLLOW_IDENT_in_reglaflex1183 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_INCREMENTO_in_reglaflex1185 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_DECREMENTO_in_reglaflex1187 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_reglaflex1190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VARIABLEFLEX_in_reglaflex2199 = new BitSet(new long[]{0x0000004000280000L});
    public static final BitSet FOLLOW_IDENT_in_reglaflex2203 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_INCREMENTO_in_reglaflex2205 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_DECREMENTO_in_reglaflex2207 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_reglaflex2210 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_metodo1_in_bloque3219 = new BitSet(new long[]{0x000000A000000000L});
    public static final BitSet FOLLOW_metodo2_in_bloque3221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cabecerafuncion_in_metodo1228 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ABRIRLLAVE_in_metodo1230 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_ret_in_metodo1232 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CERRARLLAVE_in_metodo1234 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cabecerafuncion_in_metodo2241 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ABRIRLLAVE_in_metodo2243 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_asignacion_in_metodo2245 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_asignacion_in_metodo2247 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_asignacion_in_metodo2249 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_decrementar_in_metodo2251 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_llamadafuncion_in_metodo2255 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_metodo2257 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_llamadafuncion_in_metodo2259 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_metodo2261 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_printf_in_metodo2263 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_printf_in_metodo2265 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_ret_in_metodo2268 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_CERRARLLAVE_in_metodo2270 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DECREMENTO_in_decrementar279 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_decrementar281 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_decrementar283 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASTERISCO_in_parametros299 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_parametros302 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_CORCHETES_in_parametros304 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_CADENA_in_parametros310 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_parametros313 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_cabecerafuncion323 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_cabecerafuncion331 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_cabecerafuncion333 = new BitSet(new long[]{0x000000A000004000L});
    public static final BitSet FOLLOW_VOID_in_cabecerafuncion337 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_TIPO_in_cabecerafuncion340 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_cabecerafuncion342 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_COMA_in_cabecerafuncion346 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_TIPO_in_cabecerafuncion348 = new BitSet(new long[]{0x0000000004200A00L});
    public static final BitSet FOLLOW_parametros_in_cabecerafuncion350 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_cabecerafuncion356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_llamadafuncion365 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_llamadafuncion367 = new BitSet(new long[]{0x0000000004204A00L});
    public static final BitSet FOLLOW_parametros_in_llamadafuncion371 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_COMA_in_llamadafuncion374 = new BitSet(new long[]{0x0000000004200A00L});
    public static final BitSet FOLLOW_parametros_in_llamadafuncion376 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_llamadafuncion382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PRINTF_in_printf395 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ABRIRPARENTESIS_in_printf397 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_CADENA_in_printf399 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_COMA_in_printf402 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IDENT_in_printf404 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_CERRARPARENTESIS_in_printf408 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_printf410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion421 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion423 = new BitSet(new long[]{0x0000000004200A00L});
    public static final BitSet FOLLOW_parametros_in_asignacion426 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_llamadafuncion_in_asignacion430 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_asignacion433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RETORNAR_in_ret442 = new BitSet(new long[]{0x0000000404200800L});
    public static final BitSet FOLLOW_SEPARADOR_in_ret453 = new BitSet(new long[]{0x0000000000000002L});

}